Objective

  • Disclaimer: non-comprehensive introduction to RNA-sequencing
  • Introduce preprocessing steps
  • Visualization
  • Analytical methods
  • Common software tools

Steps to an RNA-seq Analysis (Literacy)

  1. Preprocessing and QC:
    • Fasta and Fastq files
    • FastQC: good vs. bad examples
    • Visualization
  2. Alignment
    • Obtaining genome sequence and annotation
    • Software: Bowtie, TopHat, STAR, Subread/Rsubread
  3. Expression Quantification
    • Count reads hitting genes, etc
    • Approaches/software: HT-Seq, STAR, Cufflinks, RPKM FPKM or CPM, RSEM, edgeR, findOverlaps (GenomicRanges). featureCounts (Rsubread)
  4. More visualization
    • Heatmaps, boxplots, PCA, t-SNE, UMAP
  5. Differential Expression
    • Batch correction
    • Overdispersion
    • General Workflow
    • Available tools: edgeR, DESeq, Limma/voom
    • Even more visualization!!

Illumina Sequencing Workflow

Figure 1: Illumina Sequencing Workflow
Figure 1: Illumina Sequencing Workflow

Sequencing Data Formats

Genome sequcencing data is often stored in one of two formats, FASTA and FASTQ text files. For example a FASTA files looks like the following:

FASTA Files

Figure 2: FASTA file format
Figure 2: FASTA file format

FASTQ Files

We can also store confidence or quality scores using a FASTQ format: Figure 3: FASTQ file format

FASTQ Encoding

In order to translate FASTQ quality scores:

Figure 4: Fastq Encoding
Figure 4: Fastq Encoding

FASTQ Probability

And now converting to confidence probabilities:

Figure 5: Fastq encoding quality scores
Figure 5: Fastq encoding quality scores

Preprocessing and QC using FASTQC

FastQC (http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) provides a simple way to do QC checks on raw sequence data:

  • Import of data from BAM, SAM or FastQ files
  • Quick overview and summary graphs and tables to quickly assess your data
  • Export of results to an HTML based permanent report
  • Offline operation to allow automated generation of reports without running the interactive application

To rund FastQC you can launch the GUI app, or run form the command line:

rna_seq_files/FastQC/./fastqc rna_seq_files/reads/R01_10_short500K.fq.gz
## Started analysis of R01_10_short500K.fq.gz
## Approx 5% complete for R01_10_short500K.fq.gz
## Approx 10% complete for R01_10_short500K.fq.gz
## Approx 15% complete for R01_10_short500K.fq.gz
## Approx 20% complete for R01_10_short500K.fq.gz
## Approx 25% complete for R01_10_short500K.fq.gz
## Approx 30% complete for R01_10_short500K.fq.gz
## Approx 35% complete for R01_10_short500K.fq.gz
## Approx 40% complete for R01_10_short500K.fq.gz
## Approx 45% complete for R01_10_short500K.fq.gz
## Approx 50% complete for R01_10_short500K.fq.gz
## Approx 55% complete for R01_10_short500K.fq.gz
## Approx 60% complete for R01_10_short500K.fq.gz
## Approx 65% complete for R01_10_short500K.fq.gz
## Approx 70% complete for R01_10_short500K.fq.gz
## Approx 75% complete for R01_10_short500K.fq.gz
## Approx 80% complete for R01_10_short500K.fq.gz
## Approx 85% complete for R01_10_short500K.fq.gz
## Approx 90% complete for R01_10_short500K.fq.gz
## Approx 95% complete for R01_10_short500K.fq.gz
## Analysis complete for R01_10_short500K.fq.gz

We can view the results here!

FastQC Scores

Figure 5: Fastqc scores
Figure 5: Fastqc scores

FastQC Score Distribution

Figure 6: Fastqc score distribution
Figure 6: Fastqc score distribution

FastQC Base Distribution

Figure 7: Fastqc base distribution
Figure 7: Fastqc base distribution

FastQC N Distribution

Figure 8: Fastqc N distribution
Figure 8: Fastqc N distribution

Alignment to the Reference Genome

Find the genomic Location of origin for the sequencing read. Software: Bowtie2, TopHat, STAR, Subread/Rsubread, many others!

Figure 9: Sequence read alignment
Figure 9: Sequence read alignment

Here is quick tutorial on sequnce aligment.

Using Rsubread to do Alignment

The following userguide will be helpful for you:

http://bioinf.wehi.edu.au/subread-package/SubreadUsersGuide.pdf

Indexing your genome

Abraham Lincoln: “Give me six hours to chop down a tree and I will spend the first four sharpening the axe.” (4 minutes indexing the genome, 2 minutes aligning the reads)

Note that you will rarely do this for human alignment. You will usually download an existing index given to you by others who have already done this work. You will do this often if you are aligning microbial reads, e.g. MTB or some other organism for which others have not already made your index for you.

buildindex(basename="rna_seq_files/genome/ucsc.hg19.chr1_120-150M",reference="rna_seq_files/genome/ucsc.hg19.chr1_120-150M.fasta.gz")
## 
##         ==========     _____ _    _ ____  _____  ______          _____  
##         =====         / ____| |  | |  _ \|  __ \|  ____|   /\   |  __ \ 
##           =====      | (___ | |  | | |_) | |__) | |__     /  \  | |  | |
##             ====      \___ \| |  | |  _ <|  _  /|  __|   / /\ \ | |  | |
##               ====    ____) | |__| | |_) | | \ \| |____ / ____ \| |__| |
##         ==========   |_____/ \____/|____/|_|  \_\______/_/    \_\_____/
##        Rsubread 2.16.0
## 
## //================================= setting ==================================\\
## ||                                                                            ||
## ||                Index name : ucsc.hg19.chr1_120-150M                        ||
## ||               Index space : base space                                     ||
## ||               Index split : no-split                                       ||
## ||          Repeat threshold : 100 repeats                                    ||
## ||              Gapped index : no                                             ||
## ||                                                                            ||
## ||       Free / total memory : 5.8GB / 24.0GB                                 ||
## ||                                                                            ||
## ||               Input files : 1 file in total                                ||
## ||                             o ucsc.hg19.chr1_120-150M.fasta.gz             ||
## ||                                                                            ||
## \\============================================================================//
## 
## //================================= Running ==================================\\
## ||                                                                            ||
## || Check the integrity of provided reference sequences ...                    ||
## || There were 4800000 notes for reference sequences.                          ||
## || The notes can be found in the log file, 'rna_seq_files/genome/ucsc.hg1 ... ||
## || Scan uninformative subreads in reference sequences ...                     ||
## || 516 uninformative subreads were found.                                     ||
## || These subreads were excluded from index building.                          ||
## || Estimate the index size...                                                 ||
## ||    8%,   0 mins elapsed, rate=15954.1k bps/s                               ||
## ||   16%,   0 mins elapsed, rate=22222.5k bps/s                               ||
## ||   24%,   0 mins elapsed, rate=25552.5k bps/s                               ||
## ||   33%,   0 mins elapsed, rate=27655.8k bps/s                               ||
## ||   41%,   0 mins elapsed, rate=29070.7k bps/s                               ||
## ||   49%,   0 mins elapsed, rate=30048.3k bps/s                               ||
## ||   58%,   0 mins elapsed, rate=30829.2k bps/s                               ||
## ||   66%,   0 mins elapsed, rate=31455.2k bps/s                               ||
## ||   74%,   0 mins elapsed, rate=31959.7k bps/s                               ||
## ||   83%,   0 mins elapsed, rate=29181.2k bps/s                               ||
## ||   91%,   0 mins elapsed, rate=26588.8k bps/s                               ||
## || 3.0 GB of memory is needed for index building.                             ||
## || Build the index...                                                         ||
## ||    8%,   0 mins elapsed, rate=2378.5k bps/s                                ||
## ||   16%,   0 mins elapsed, rate=4057.5k bps/s                                ||
## ||   24%,   0 mins elapsed, rate=5347.1k bps/s                                ||
## ||   33%,   0 mins elapsed, rate=6347.1k bps/s                                ||
## ||   41%,   0 mins elapsed, rate=7103.7k bps/s                                ||
## ||   49%,   0 mins elapsed, rate=7722.0k bps/s                                ||
## ||   58%,   0 mins elapsed, rate=8194.3k bps/s                                ||
## ||   66%,   0 mins elapsed, rate=8653.7k bps/s                                ||
## ||   74%,   0 mins elapsed, rate=9061.5k bps/s                                ||
## ||   83%,   0 mins elapsed, rate=8794.2k bps/s                                ||
## ||   91%,   0 mins elapsed, rate=8357.6k bps/s                                ||
## || Save current index block...                                                ||
## ||  [ 0.0% finished ]                                                         ||
## ||  [ 10.0% finished ]                                                        ||
## ||  [ 20.0% finished ]                                                        ||
## ||  [ 30.0% finished ]                                                        ||
## ||  [ 40.0% finished ]                                                        ||
## ||  [ 50.0% finished ]                                                        ||
## ||  [ 60.0% finished ]                                                        ||
## ||  [ 70.0% finished ]                                                        ||
## ||  [ 80.0% finished ]                                                        ||
## ||  [ 90.0% finished ]                                                        ||
## ||  [ 100.0% finished ]                                                       ||
## ||                                                                            ||
## ||                      Total running time: 0.3 minutes.                      ||
## || Index rna_seq_files/genome/ucsc.hg19.chr1_120-150M was successfully built. ||
## ||                                                                            ||
## \\============================================================================//

Took me ~0.2 minutes

Aligning your reads:

Note that this outputs results in a .bam file and not a .sam file

align(index="rna_seq_files/genome/ucsc.hg19.chr1_120-150M",readfile1="rna_seq_files/reads/R01_10_short500K.fq.gz",output_file="rna_seq_files/alignments/R01_10_short.bam", nthreads=4) 
## 
##         ==========     _____ _    _ ____  _____  ______          _____  
##         =====         / ____| |  | |  _ \|  __ \|  ____|   /\   |  __ \ 
##           =====      | (___ | |  | | |_) | |__) | |__     /  \  | |  | |
##             ====      \___ \| |  | |  _ <|  _  /|  __|   / /\ \ | |  | |
##               ====    ____) | |__| | |_) | | \ \| |____ / ____ \| |__| |
##         ==========   |_____/ \____/|____/|_|  \_\______/_/    \_\_____/
##        Rsubread 2.16.0
## 
## //================================= setting ==================================\\
## ||                                                                            ||
## || Function      : Read alignment (RNA-Seq)                                   ||
## || Input file    : R01_10_short500K.fq.gz                                     ||
## || Output file   : R01_10_short.bam (BAM)                                     ||
## || Index name    : ucsc.hg19.chr1_120-150M                                    ||
## ||                                                                            ||
## ||                    ------------------------------------                    ||
## ||                                                                            ||
## ||                               Threads : 4                                  ||
## ||                          Phred offset : 33                                 ||
## ||                             Min votes : 3 / 10                             ||
## ||                        Max mismatches : 3                                  ||
## ||                      Max indel length : 5                                  ||
## ||            Report multi-mapping reads : yes                                ||
## || Max alignments per multi-mapping read : 1                                  ||
## ||                                                                            ||
## \\============================================================================//
## 
## //================ Running (16-Nov-2023 17:01:48, pid=88194) =================\\
## ||                                                                            ||
## || Check the input reads.                                                     ||
## || The input file contains base space reads.                                  ||
## || Initialise the memory objects.                                             ||
## || Estimate the mean read length.                                             ||
## || The range of Phred scores observed in the data is [2,37]                   ||
## || Create the output BAM file.                                                ||
## || Check the index.                                                           ||
## || Init the voting space.                                                     ||
## || Global environment is initialised.                                         ||
## || Load the 1-th index block...                                               ||
## || The index block has been loaded.                                           ||
## || Start read mapping in chunk.                                               ||
## ||    5% completed, 2.0 mins elapsed, rate=62.5k reads per second             ||
## ||   11% completed, 2.0 mins elapsed, rate=90.1k reads per second             ||
## ||   18% completed, 2.0 mins elapsed, rate=105.6k reads per second            ||
## ||   24% completed, 2.0 mins elapsed, rate=118.4k reads per second            ||
## ||   31% completed, 2.0 mins elapsed, rate=125.8k reads per second            ||
## ||   38% completed, 2.0 mins elapsed, rate=133.3k reads per second            ||
## ||   44% completed, 2.0 mins elapsed, rate=137.2k reads per second            ||
## ||   51% completed, 2.0 mins elapsed, rate=140.1k reads per second            ||
## ||   58% completed, 2.0 mins elapsed, rate=143.3k reads per second            ||
## ||   64% completed, 2.0 mins elapsed, rate=146.5k reads per second            ||
## ||   69% completed, 2.0 mins elapsed, rate=2.9k reads per second              ||
## ||   73% completed, 2.0 mins elapsed, rate=3.0k reads per second              ||
## ||   76% completed, 2.0 mins elapsed, rate=3.1k reads per second              ||
## ||   80% completed, 2.0 mins elapsed, rate=3.3k reads per second              ||
## ||   83% completed, 2.0 mins elapsed, rate=3.4k reads per second              ||
## ||   86% completed, 2.0 mins elapsed, rate=3.6k reads per second              ||
## ||   90% completed, 2.1 mins elapsed, rate=3.7k reads per second              ||
## ||   93% completed, 2.1 mins elapsed, rate=3.8k reads per second              ||
## ||   96% completed, 2.1 mins elapsed, rate=4.0k reads per second              ||
## ||                                                                            ||
## ||                           Completed successfully.                          ||
## ||                                                                            ||
## \\====================================    ====================================//
## 
## //================================   Summary =================================\\
## ||                                                                            ||
## ||                 Total reads : 503,568                                      ||
## ||                      Mapped : 376,964 (74.9%)                              ||
## ||             Uniquely mapped : 317,555                                      ||
## ||               Multi-mapping : 59,409                                       ||
## ||                                                                            ||
## ||                    Unmapped : 126,604                                      ||
## ||                                                                            ||
## ||                      Indels : 2,236                                        ||
## ||                                                                            ||
## ||                Running time : 2.1 minutes                                  ||
## ||                                                                            ||
## \\============================================================================//
##                       R01_10_short.bam
## Total_reads                     503568
## Mapped_reads                    376964
## Uniquely_mapped_reads           317555
## Multi_mapping_reads              59409
## Unmapped_reads                  126604
## Indels                            2236

My laptop is an Apple M2, which has 8 cores (used 4 cores), 24GB RAM

Took 15.7 minutes to align ~60M reads to the 30M bases

Took 0.7 minutes to align ~6.5M reads to the 30M bases

Took 0.3 minutes to align ~500K reads to the 30M bases

Aligned Sequencing Data Formats (SAM and BAM)

Note that Rsubread outputs a .bam file (bam = binary alignment map) and not a .sam file (sam = sequence alignment map). Here is some information about a .sam file:

https://en.wikipedia.org/wiki/SAM_(file_format)

Figure 10: SAM and BAM file format
Figure 10: SAM and BAM file format

https://samtools.github.io/hts-specs/SAMv1.pdf

To convert .sam to .bam or vice versa, a package called Rsamtools. Using Rsamtools, you can convert bam to sam as follows:

asSam("rna_seq_files/alignments/R01_10_short.bam", overwrite=T) 
## [1] "rna_seq_files/alignments/R01_10_short.sam"
# To convert to bam:
#asBam("rna_seq_files/alignments/R01_10_short.bam") 

Makes a system call to the Mac terminal to generate a .sam file

Feature counts

Now we can count reads hitting genes. Approaches/software:

  • HT-Seq
  • STAR
  • Cufflinks
  • RPKM FPKM or CPM
  • RSEM
  • edgeR
  • findOverlaps (GenomicRanges)
  • featureCounts (Rsubread)
Figure 11: Feature Counts
Figure 11: Feature Counts
fCountsList = featureCounts("rna_seq_files/alignments/R01_10_short.bam", annot.ext="rna_seq_files/genome/genes.chr1_120-150M.gtf", isGTFAnnotationFile=TRUE)
## 
##         ==========     _____ _    _ ____  _____  ______          _____  
##         =====         / ____| |  | |  _ \|  __ \|  ____|   /\   |  __ \ 
##           =====      | (___ | |  | | |_) | |__) | |__     /  \  | |  | |
##             ====      \___ \| |  | |  _ <|  _  /|  __|   / /\ \ | |  | |
##               ====    ____) | |__| | |_) | | \ \| |____ / ____ \| |__| |
##         ==========   |_____/ \____/|____/|_|  \_\______/_/    \_\_____/
##        Rsubread 2.16.0
## 
## //========================== featureCounts setting ===========================\\
## ||                                                                            ||
## ||             Input files : 1 BAM file                                       ||
## ||                                                                            ||
## ||                           R01_10_short.bam                                 ||
## ||                                                                            ||
## ||              Paired-end : no                                               ||
## ||        Count read pairs : no                                               ||
## ||              Annotation : genes.chr1_120-150M.gtf (GTF)                    ||
## ||      Dir for temp files : .                                                ||
## ||                 Threads : 1                                                ||
## ||                   Level : meta-feature level                               ||
## ||      Multimapping reads : counted                                          ||
## || Multi-overlapping reads : not counted                                      ||
## ||   Min overlapping bases : 1                                                ||
## ||                                                                            ||
## \\============================================================================//
## 
## //================================= Running ==================================\\
## ||                                                                            ||
## || Load annotation file genes.chr1_120-150M.gtf ...                           ||
## ||    Features : 1918                                                         ||
## ||    Meta-features : 104                                                     ||
## ||    Chromosomes/contigs : 1                                                 ||
## ||                                                                            ||
## || Process BAM file R01_10_short.bam...                                       ||
## ||    Single-end reads are included.                                          ||
## ||    Total alignments : 503568                                               ||
## ||    Successfully assigned alignments : 4561 (0.9%)                          ||
## ||    Running time : 0.01 minutes                                             ||
## ||                                                                            ||
## || Write the final count table.                                               ||
## || Write the read assignment summary.                                         ||
## ||                                                                            ||
## \\============================================================================//
featureCounts = cbind(fCountsList$annotation[,1], fCountsList$counts)

write.table(featureCounts, "rna_seq_files/alignments/R01_10_short.features.txt", sep="\t", col.names=FALSE, row.names=FALSE, quote=FALSE)

SCTK

Use the Single Cell Toolkit to analyze your RNA-seq data!

  • Inputs: RNA-seq, Nanostring, Proteomic, immunological assay data
  • Interactive analyses and visualization of data
  • Save results, figures, etc
  • Sophisticated data structures
  • R/Bioconductor package
Figure 12: Feature Counts
Figure 12: Feature Counts
Figure 13: Feature Counts
Figure 13: Feature Counts
#install.packages("devtools")
#devtools::install_github("wevanjohnson/singleCellTK")
library(singleCellTK)
singleCellTK()

### open features_combined.txt
### and meta_data.txt

Topics in downstream analyses:

Batch effects

Batch Effect: Non-biological variation due to differences in batches of data that confound the relationships between covariates of interest.

Batch effects are caused by differences in:

  • Gene expression profiling platform
  • Lab protocol or experimenter
  • Time of day or processing
  • Atmospheric ozone level (Rhodes et al. 2004)

Batch Effect Examples:

Example #1: Nirtic Oxide

Example 1 resulted from an oligonucleotide microarray (Affymetrix HG-U133A) experiment on human lung fibroblast cells (IMR90) designed to reveal whether exposing mammalian cells to nitric oxide (NO) stabilizes mRNAs. Control samples and samples exposed to NO for 1 h were then transcription inhibited for 7.5 h. Microarray data were collected at baseline (0 h, just before transcription inhibition) and at the end of the experiment (after 7.5 h) for both the control and the NO-treated group. It was hypothesized that NO will induce or inhibit the expression of some genes, but would also stabilize the mRNA of many genes, preventing them from being degraded after 7.5 h.

Figure 14
Figure 14

Example #2: Control Gene Expression

Figure 15
Figure 15

Example #3: Proteomic markers to predict endometriosis (39 total)

Single peptide predictors of disease (AUC): 0.82, 0.76, 0.74, 0.74, 0.70 (+12 more >0.6)

Single peptide predictors of batch (AUC): 0.99, 0.94, 0.91, 0.86, 0.86, 0.84, 0.84, 0.84, 0.83, 0.82 (+7 more >0.6)

Predict batch better than disease!

ComBat Batch Adjustment

Figure 16 Figure 17

Normalization

Need to normalize data because of:

  • Sequencing depth difference in each RNA sample
  • RNA composition differences
  • Highly expressed genes can consume a substantial proportion of RNA-Seq reads, causing other genes to be under-sampled
  • Different methods
    • Log counts
    • Counts per million (CPM and logCPM; RPKM, FPKM)
    • Trimmed mean of M-values (edgeR/limma)
    • Median of Ratios method (DESeq)
Figure 18
Figure 18

Problem of overdispersion:

Alignment and feature counting result in discrete count data (i.e. the number of reads to each gene). A first thought might be to use a Poisson distribution to model the counts. However, the Poisson makes a strict mean-variance assumption (i.e. they are the same. Studies have demonstrated that a negative binomial fits data better.

Figure 19
Figure 19

Data Structures

A data structure is a particular way of organizing data in a computer so that it can be used effectively. The idea is to reduce the space and time complexities of different tasks.

Data structures in R programming are tools for holding multiple values, variables, and sometimes functions

Please think very carefully about the way you manage and store your data! This can make your life much easier and make your code and data cleaner and more portable!

There are advanced R data structures, S3 and S4 class objects, that can facilitate object orientated programming. One useful example of an S4 class data structure is the SummarizedExperiment object. Figure 20

Visualization and Dimension reduction

Read in dataset

Dataset from: https://bmcinfectdis.biomedcentral.com/articles/10.1186/s12879-018-3127-4

counts <- read.table("rna_seq_files/downstream_analysis/features_combined.txt", sep="\t", 
                     header=T, row.names=1)
meta_data <- read.table("rna_seq_files/downstream_analysis/meta_data.txt", sep="\t", 
                     header=T, row.names=1)
group <- meta_data$Disease

sce_hivtb <- SummarizedExperiment(assays=list(counts=counts),
                     colData = meta_data)

sce_hivtb <- mkAssay(sce_hivtb, log = TRUE, counts_to_CPM = TRUE)
assays(sce_hivtb)
## List of length 4
## names(4): counts log_counts counts_cpm log_counts_cpm

PCA

set.seed(1)
pca_out <- prcomp(t(assay(sce_hivtb,"log_counts_cpm")))
  
pca_plot <- as.data.frame(pca_out$x)
pca_plot$Disease <- as.factor(sce_hivtb$Disease)

g <- pca_plot %>% ggplot(aes(x=PC1, y=PC2, color=Disease)) +
  geom_point(size=1.5) + xlab("PCA1") + ylab("PCA2") +
  theme(plot.title = element_text(hjust = 0.5)) +
  ggtitle("PCA Plot")

plot(g)

UMAP

set.seed(1)
umap_out <- umap(t(assay(sce_hivtb,"log_counts_cpm")))

umap_plot <- as.data.frame(umap_out$layout)
umap_plot$Disease <- as.factor(sce_hivtb$Disease)

g <- umap_plot %>% ggplot(aes(x=V1, y=V2, color=Disease)) +
  geom_point(size=1.5) + xlab("UMAP1") + ylab("UMAP2") +
  theme(plot.title = element_text(hjust = 0.5)) +
  ggtitle("UMAP Plot")

plot(g)

Differential Expression

Figure 21
Figure 21

EdgeR Example

Implements statistical methods for DE analysis based on the negative binomial model:

counts<-counts[which(rowSums(cpm(counts))>1),] #Gene Filtering
dge <- DGEList(counts=counts, group=group) #Computes library size
dge <- calcNormFactors(dge) #TMM normalization
design<-model.matrix(~group)
dge<-estimateDisp(counts,design) #Estimates common, trended and tagwise dispersion

In negative binomial models, each gene is given a dispersion parameter. Dispersions control the variances of the gene counts and underestimation will lead to false discovery and overestimation may lead to a lower rate of true discovery

#perform likelihood ratio tests
fit<-glmFit(counts,design, dispersion=dge$tagwise.dispersion) #fits a negative binomial GLM with the dispersion estimates
lrt<-glmLRT(fit, coef=2) #Performs likelihood ratio test, comparing the goodness of the fit of the full versus reduced model
topTags(lrt)
## Coefficient:  grouptb_hiv 
##             logFC   logCPM        LR       PValue          FDR
## IL1R2    4.334196 8.207931 100.01344 1.513665e-23 2.933634e-19
## AP3B2    5.758193 2.952770  71.58586 2.654527e-17 2.572370e-13
## FCGR1C   2.818498 4.536149  65.07230 7.220003e-16 4.664362e-12
## VNN1     3.150158 8.071776  64.39089 1.020287e-15 4.943545e-12
## CYP1B1   3.135471 6.873000  63.00698 2.059751e-15 7.984006e-12
## IL18R1   2.726131 6.487474  60.75863 6.451968e-15 2.084093e-11
## SLC29A1 -4.135274 3.969739  59.69166 1.109455e-14 3.071764e-11
## CACNG8  -4.134373 3.189823  58.97316 1.598376e-14 3.872266e-11
## SOCS3    2.665230 6.475922  57.71505 3.029759e-14 6.524418e-11
## ZAK      2.601746 6.126750  56.08435 6.942749e-14 1.345574e-10
#perform quasi-likelihood F-tests
#Replace the chisquare approximation to the likelihood ratio statistic with a quasi-likelihood F-test, more control of error rate
fit<-glmQLFit(counts, design, dispersion=dge$tagwise.dispersion) #use for small dataset, reflects uncertainty in estimating dispersion for each gene, more robust and reliable error rate #control when the number of replicates is small
qlf<-glmQLFTest(fit, coef=2)
topTags(qlf)
## Coefficient:  grouptb_hiv 
##             logFC   logCPM        F       PValue          FDR
## IL1R2    4.334196 8.207931 98.25774 3.688811e-23 7.149284e-19
## AP3B2    5.758193 2.952770 68.34333 1.376533e-16 1.333930e-12
## FCGR1C   2.818498 4.536149 63.94549 1.281415e-15 8.278371e-12
## VNN1     3.150158 8.071776 63.35564 1.728679e-15 8.375881e-12
## CYP1B1   3.135471 6.873000 62.52984 2.628931e-15 1.019026e-11
## IL18R1   2.726131 6.487474 60.35328 7.940072e-15 2.564775e-11
## SLC29A1 -4.135274 3.969739 58.17236 2.404908e-14 6.658504e-11
## SOCS3    2.665230 6.475922 57.33072 3.688947e-14 8.936935e-11
## CACNG8  -4.134373 3.189823 56.59826 5.353531e-14 1.152853e-10
## ZAK      2.601746 6.126750 55.70915 8.414232e-14 1.630762e-10
#For visualization, heatmaps/PCA
Logcpm<-cpm(counts,log=TRUE)

DESeq2 Example

dds <- DESeqDataSetFromMatrix(countData = counts, colData=meta_data, design=~Disease)
## Warning in DESeqDataSet(se, design = design, ignoreRank): some variables in
## design formula are characters, converting to factors
#colData is a data frame of demographic/phenotypic data
dds<-dds[rowSums(counts(dds))>1,] #Gene Filtering
dds<-DESeq(dds) #Performs estimation of size factors,dispersion, and negative binomial GLM f#itting
## estimating size factors
## estimating dispersions
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## fitting model and testing
## -- replacing outliers and refitting for 180 genes
## -- DESeq argument 'minReplicatesForReplace' = 7 
## -- original counts are preserved in counts(dds)
## estimating dispersions
## fitting model and testing
res <- results(dds)[order(results(dds)[,6]),]
res[1:10,]
## log2 fold change (MLE): Disease tb hiv art vs hiv only 
## Wald test p-value: Disease tb hiv art vs hiv only 
## DataFrame with 10 rows and 6 columns
##          baseMean log2FoldChange     lfcSE      stat      pvalue        padj
##         <numeric>      <numeric> <numeric> <numeric>   <numeric>   <numeric>
## ZEB2    1702.8164        1.75543  0.217662   8.06493 7.32802e-16 1.19996e-11
## DCUN1D3   48.7029        2.52495  0.361657   6.98163 2.91765e-12 2.38883e-08
## TIPARP   724.9429        2.22978  0.334020   6.67558 2.46254e-11 1.34414e-07
## ITPKC    196.8723        3.04144  0.465638   6.53177 6.49981e-11 2.66086e-07
## LAIR1   1528.6852        3.01392  0.472158   6.38328 1.73337e-10 4.40512e-07
## COPS4    559.7527        2.67612  0.419911   6.37306 1.85294e-10 4.40512e-07
## IGF2BP3  360.1066        3.29761  0.517782   6.36873 1.90604e-10 4.40512e-07
## GSAP     964.2702        1.26506  0.199220   6.35007 2.15212e-10 4.40512e-07
## RBMS1   3297.7791        2.51612  0.400420   6.28370 3.30604e-10 6.01516e-07
## ZDHHC20  554.9810        2.51989  0.403490   6.24523 4.23175e-10 6.92949e-07

Heatmap of DEGs

# Make a Heatmap of DEGs
mat = as.matrix(assay(sce_hivtb,"log_counts_cpm"))[order(results(dds)[,6])[1:100],] # Using first 1000 genes to simplify
mat = t(scale(t(mat)))

df=data.frame(Disease=colData(sce_hivtb)$Disease) 

ha = HeatmapAnnotation(df = df, col = list(Disease=c("tb_hiv"="Red","hiv_only"="Blue", "tb_hiv_art"="Green")))

Heatmap(mat,show_row_names=F,show_column_names = F, top_annotation = ha)

Limma Example

  • Most similar to microarray data flow
  • Reads counts are converted to log2 counts per million (logCPM) and the mean-variance relationship is modeled with precision weights (voom transform)
dge <- DGEList(counts=counts, group=group) #From edgeR, Computes library size
counts<-counts[which(rowSums(cpm(counts))>1),] #Gene Filtering
dge <- DGEList(counts=counts, group=group) #Re-compute library size
dge <- calcNormFactors(dge) #TMM normalization
design<-model.matrix(~group)
v<-voom(dge, design) #voom transform to calculate weights to eliminate mean-variance #relationship
#use usual limma pipelines
fit<-lmFit(v,design)
fit<-eBayes(fit)
topTable(fit, coef=ncol(design))
##               logFC    AveExpr        t      P.Value    adj.P.Val         B
## DCUN1D3    2.415048  1.1213257 7.597067 5.330234e-09 5.174623e-05 10.335712
## ZEB2       1.681109  6.4208329 7.439069 8.537472e-09 5.174623e-05 10.090462
## LINC01093  5.474634  0.8710200 7.414057 9.200542e-09 5.174623e-05  9.932749
## FAM151B    3.709561  1.2894208 7.364262 1.067978e-08 5.174623e-05  9.825077
## C7orf61    2.599925  2.7347797 7.206753 1.714091e-08 5.536801e-05  9.443534
## CYP19A1    6.863347 -0.9439843 7.234226 1.578062e-08 5.536801e-05  9.241797
## TIPARP     2.118756  5.0816090 6.625677 9.994987e-08 1.885771e-04  7.773090
## IGF2BP3    3.336976  3.6439397 6.618279 1.022347e-07 1.885771e-04  7.751390
## COL4A2-AS1 5.463005 -3.3142037 6.975753 3.444177e-08 9.535941e-05  7.614380
## LAYN       3.342889 -0.9931241 6.639498 9.581743e-08 1.885771e-04  7.409620

Pathway analysis

After finding DEGs, look for correlated genes/networks and enriched pathway sets in the gene set using:

  • Weighted gene coexpression network analysis (WGCNA)
  • GSEA, GSVA, EnrichR, many more!!
  • Qiagen Ingenuity Pathway Analysis (IPA)
Figure 22
Figure 22
Figure 23
Figure 23

TBSignatureProfiler Analysis

The TBSignatureProfiler was developed in the Johnson Lab in 2021 to profile new and existing TB gene expression signatures https://bmcinfectdis.biomedcentral.com/articles/10.1186/s12879-020-05598-z

sce_hivtb_2 <- sce_hivtb[,colData(sce_hivtb)$Disease != "tb_hiv_art"]
TBsigs <- TBsignatures[-12] 
ssgsea_res <- runTBsigProfiler(sce_hivtb_2, useAssay = "log_counts_cpm",
                                 signatures = TBsigs,
                                 algorithm = "ssGSEA",
                                 combineSigAndAlgorithm = TRUE,
                                 parallel.sz = 1)
## Warning: Calling gsva(expr=., gset.idx.list=., method=., ...) is deprecated;
## use a method-specific parameter object (see '?gsva').
## Warning in .filterFeatures(expr, method): 2204 genes with constant expression
## values throughout the samples.

Signature Heatmap

# Colors for gradient
signatureHeatmap(ssgsea_res, name = "Heatmap of Signatures (ssGSEA)", 
                 signatureColNames = names(TBsigs),
                 annotationColNames = c("Disease"),
                 scale = TRUE,
                 split_heatmap = "none",
                 showColumnNames = FALSE)

Signature Boxplots

signatureBoxplot(ssgsea_res, name="ssGSEA", 
                 signatureColNames = names(TBsigs),
                 annotationColName = c("Disease"))
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Boxplots Single

for (i in names(TBsigs)){

  cat("#####" , i, "\n")

  print(signatureBoxplot(ssgsea_res, name=i, signatureColNames = i,
                 annotationColName = c("Disease")))
  
  cat("\n\n")
}
Anderson_42
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Anderson_OD_51
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Berry_393
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Berry_OD_86
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Blankley_380
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Blankley_5
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Bloom_OD_144
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Bloom_RES_268
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Bloom_RES_558
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Chen_5
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Chen_HIV_4
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Darboe_RISK_11
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Dawany_HIV_251
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Duffy_23
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Esmail_203
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Esmail_82
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Esmail_OD_893
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Estevez_133
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Estevez_259
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Francisco_OD_2
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Gjoen_10
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Gjoen_7
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Gliddon_2_OD_4
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Gliddon_HIV_3
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Gliddon_OD_3
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Gliddon_OD_4
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Gong_OD_4
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Heycken_FAIL_22
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Hoang_OD_13
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Hoang_OD_20
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Hoang_OD_3
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Huang_OD_13
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Jacobsen_3
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Jenum_8
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Kaforou_27
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Kaforou_OD_44
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Kaforou_OD_53
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Kaul_3
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Kulkarni_HIV_2
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Kwan_186
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

LauxdaCosta_OD_3
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Lee_4
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Leong_24
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Leong_RISK_29
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Long_RES_10
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Maertzdorf_15
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Maertzdorf_4
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Maertzdorf_OD_100
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Natarajan_7
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

PennNich_RISK_6
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Qian_OD_17
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Rajan_HIV_5
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Roe_3
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Roe_OD_4
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Sambarey_HIV_10
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Singhania_OD_20
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Sivakumaran_11
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Sloot_HIV_2
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Suliman_4
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Suliman_RISK_2
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Suliman_RISK_4
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Sweeney_OD_3
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Tabone_OD_11
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Tabone_RES_25
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Tabone_RES_27
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Thompson_9
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Thompson_FAIL_13
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Thompson_RES_5
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Tornheim_71
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Tornheim_RES_25
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Vargas_18
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Vargas_42
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Verhagen_10
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Walter_51
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Walter_PNA_119
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Walter_PNA_47
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Zak_RISK_16
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Zhao_NANO_6
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.
## Warning: Use of `boxplotdfm$Group` is discouraged.
## ℹ Use `Group` instead.
## Warning: Use of `boxplotdfm$Score` is discouraged.
## ℹ Use `Score` instead.

Signature Gene Heatmaps

for (i in names(TBsigs)){

  cat("#####" , i, "\n")

  signatureGeneHeatmap(ssgsea_res, useAssay="log_counts_cpm", 
                     TBsigs[[i]],
                     name = i, signatureColNames = NULL, 
                    annotationColNames = c(i,"Disease"),
                     showColumnNames = FALSE)
  
  cat("\n\n")
}
Anderson_42

Anderson_OD_51

Berry_393

Berry_OD_86

Blankley_380

Blankley_5

Bloom_OD_144

Bloom_RES_268

Bloom_RES_558

Chen_5

Chen_HIV_4

Darboe_RISK_11

Dawany_HIV_251

Duffy_23

Esmail_203

Esmail_82

Esmail_OD_893

Estevez_133

Estevez_259

Francisco_OD_2

Gjoen_10

Gjoen_7

Gliddon_2_OD_4

Gliddon_HIV_3

Gliddon_OD_3

Gliddon_OD_4

Gong_OD_4

Heycken_FAIL_22

Hoang_OD_13

Hoang_OD_20

Hoang_OD_3

Huang_OD_13

Jacobsen_3

Jenum_8

Kaforou_27

Kaforou_OD_44

Kaforou_OD_53

Kaul_3

Kulkarni_HIV_2

Kwan_186

LauxdaCosta_OD_3

Lee_4

Leong_24

Leong_RISK_29

Long_RES_10

Maertzdorf_15

Maertzdorf_4

Maertzdorf_OD_100

Natarajan_7

PennNich_RISK_6

Qian_OD_17

Rajan_HIV_5

Roe_3

Roe_OD_4

Sambarey_HIV_10

Singhania_OD_20

Sivakumaran_11

Sloot_HIV_2

Suliman_4

Suliman_RISK_2

Suliman_RISK_4

Sweeney_OD_3

Tabone_OD_11

Tabone_RES_25

Tabone_RES_27

Thompson_9

Thompson_FAIL_13

Thompson_RES_5

Tornheim_71

Tornheim_RES_25

Vargas_18

Vargas_42

Verhagen_10

Walter_51

Walter_PNA_119

Walter_PNA_47

Zak_RISK_16

Zhao_NANO_6

AUC Table

set.seed(0)
tableAUC(ssgsea_res, 
         annotationColName = "Disease", 
         signatureColNames = names(TBsigs),
         num.boot = 100, 
         pb.show = FALSE)

AUC Boxplots

set.seed(0)
compareBoxplots(ssgsea_res, annotationColName = "Disease",
                signatureColNames = names(TBsigs),
                pb.show = FALSE, fill.col = "blue",
                rotateLabels = TRUE)

ROC plots

signatureROCplot_CI(inputData = ssgsea_res,
                   signatureColNames = names(TBsigs),
                   annotationColName = "Disease")
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |=                                                                     |   1%
  |                                                                            
  |==                                                                    |   3%
  |                                                                            
  |===                                                                   |   4%
  |                                                                            
  |====                                                                  |   5%
  |                                                                            
  |====                                                                  |   6%
  |                                                                            
  |=====                                                                 |   8%
  |                                                                            
  |======                                                                |   9%
  |                                                                            
  |=======                                                               |  10%
  |                                                                            
  |========                                                              |  12%
  |                                                                            
  |=========                                                             |  13%
  |                                                                            
  |==========                                                            |  14%
  |                                                                            
  |===========                                                           |  15%
  |                                                                            
  |============                                                          |  17%
  |                                                                            
  |=============                                                         |  18%
  |                                                                            
  |=============                                                         |  19%
  |                                                                            
  |==============                                                        |  21%
  |                                                                            
  |===============                                                       |  22%
  |                                                                            
  |================                                                      |  23%
  |                                                                            
  |=================                                                     |  24%
  |                                                                            
  |==================                                                    |  26%
  |                                                                            
  |===================                                                   |  27%
  |                                                                            
  |====================                                                  |  28%
  |                                                                            
  |=====================                                                 |  29%
  |                                                                            
  |======================                                                |  31%
  |                                                                            
  |======================                                                |  32%
  |                                                                            
  |=======================                                               |  33%
  |                                                                            
  |========================                                              |  35%
  |                                                                            
  |=========================                                             |  36%
  |                                                                            
  |==========================                                            |  37%
  |                                                                            
  |===========================                                           |  38%
  |                                                                            
  |============================                                          |  40%
  |                                                                            
  |=============================                                         |  41%
  |                                                                            
  |==============================                                        |  42%
  |                                                                            
  |===============================                                       |  44%
  |                                                                            
  |===============================                                       |  45%
  |                                                                            
  |================================                                      |  46%
  |                                                                            
  |=================================                                     |  47%
  |                                                                            
  |==================================                                    |  49%
  |                                                                            
  |===================================                                   |  50%
  |                                                                            
  |====================================                                  |  51%
  |                                                                            
  |=====================================                                 |  53%
  |                                                                            
  |======================================                                |  54%
  |                                                                            
  |=======================================                               |  55%
  |                                                                            
  |=======================================                               |  56%
  |                                                                            
  |========================================                              |  58%
  |                                                                            
  |=========================================                             |  59%
  |                                                                            
  |==========================================                            |  60%
  |                                                                            
  |===========================================                           |  62%
  |                                                                            
  |============================================                          |  63%
  |                                                                            
  |=============================================                         |  64%
  |                                                                            
  |==============================================                        |  65%
  |                                                                            
  |===============================================                       |  67%
  |                                                                            
  |================================================                      |  68%
  |                                                                            
  |================================================                      |  69%
  |                                                                            
  |=================================================                     |  71%
  |                                                                            
  |==================================================                    |  72%
  |                                                                            
  |===================================================                   |  73%
  |                                                                            
  |====================================================                  |  74%
  |                                                                            
  |=====================================================                 |  76%
  |                                                                            
  |======================================================                |  77%
  |                                                                            
  |=======================================================               |  78%
  |                                                                            
  |========================================================              |  79%
  |                                                                            
  |=========================================================             |  81%
  |                                                                            
  |=========================================================             |  82%
  |                                                                            
  |==========================================================            |  83%
  |                                                                            
  |===========================================================           |  85%
  |                                                                            
  |============================================================          |  86%
  |                                                                            
  |=============================================================         |  87%
  |                                                                            
  |==============================================================        |  88%
  |                                                                            
  |===============================================================       |  90%
  |                                                                            
  |================================================================      |  91%
  |                                                                            
  |=================================================================     |  92%
  |                                                                            
  |==================================================================    |  94%
  |                                                                            
  |==================================================================    |  95%
  |                                                                            
  |===================================================================   |  96%
  |                                                                            
  |====================================================================  |  97%
  |                                                                            
  |===================================================================== |  99%
  |                                                                            
  |======================================================================| 100%

Separate ROC plots

for (i in names(TBsigs)){
  
  cat("#####" , i, "\n")
  
  print(signatureROCplot_CI(inputData = ssgsea_res, 
                   signatureColNames = i,
                   annotationColName = "Disease",
                   name = paste("ROC plot,", i, sep = " ")))
  
  cat("\n\n")
}
Anderson_42

|
| | 0% |
|======================================================================| 100%

Anderson_OD_51

|
| | 0% |
|======================================================================| 100%

Berry_393

|
| | 0% |
|======================================================================| 100%

Berry_OD_86

|
| | 0% |
|======================================================================| 100%

Blankley_380

|
| | 0% |
|======================================================================| 100%

Blankley_5

|
| | 0% |
|======================================================================| 100%

Bloom_OD_144

|
| | 0% |
|======================================================================| 100%

Bloom_RES_268

|
| | 0% |
|======================================================================| 100%

Bloom_RES_558

|
| | 0% |
|======================================================================| 100%

Chen_5

|
| | 0% |
|======================================================================| 100%

Chen_HIV_4

|
| | 0% |
|======================================================================| 100%

Darboe_RISK_11

|
| | 0% |
|======================================================================| 100%

Dawany_HIV_251

|
| | 0% |
|======================================================================| 100%

Duffy_23

|
| | 0% |
|======================================================================| 100%

Esmail_203

|
| | 0% |
|======================================================================| 100%

Esmail_82

|
| | 0% |
|======================================================================| 100%

Esmail_OD_893

|
| | 0% |
|======================================================================| 100%

Estevez_133

|
| | 0% |
|======================================================================| 100%

Estevez_259

|
| | 0% |
|======================================================================| 100%

Francisco_OD_2

|
| | 0% |
|======================================================================| 100%

Gjoen_10

|
| | 0% |
|======================================================================| 100%

Gjoen_7

|
| | 0% |
|======================================================================| 100%

Gliddon_2_OD_4

|
| | 0% |
|======================================================================| 100%

Gliddon_HIV_3

|
| | 0% |
|======================================================================| 100%

Gliddon_OD_3

|
| | 0% |
|======================================================================| 100%

Gliddon_OD_4

|
| | 0% |
|======================================================================| 100%

Gong_OD_4

|
| | 0% |
|======================================================================| 100%

Heycken_FAIL_22

|
| | 0% |
|======================================================================| 100%

Hoang_OD_13

|
| | 0% |
|======================================================================| 100%

Hoang_OD_20

|
| | 0% |
|======================================================================| 100%

Hoang_OD_3

|
| | 0% |
|======================================================================| 100%

Huang_OD_13

|
| | 0% |
|======================================================================| 100%

Jacobsen_3

|
| | 0% |
|======================================================================| 100%

Jenum_8

|
| | 0% |
|======================================================================| 100%

Kaforou_27

|
| | 0% |
|======================================================================| 100%

Kaforou_OD_44

|
| | 0% |
|======================================================================| 100%

Kaforou_OD_53

|
| | 0% |
|======================================================================| 100%

Kaul_3

|
| | 0% |
|======================================================================| 100%

Kulkarni_HIV_2

|
| | 0% |
|======================================================================| 100%

Kwan_186

|
| | 0% |
|======================================================================| 100%

LauxdaCosta_OD_3

|
| | 0% |
|======================================================================| 100%

Lee_4

|
| | 0% |
|======================================================================| 100%

Leong_24

|
| | 0% |
|======================================================================| 100%

Leong_RISK_29

|
| | 0% |
|======================================================================| 100%

Long_RES_10

|
| | 0% |
|======================================================================| 100%

Maertzdorf_15

|
| | 0% |
|======================================================================| 100%

Maertzdorf_4

|
| | 0% |
|======================================================================| 100%

Maertzdorf_OD_100

|
| | 0% |
|======================================================================| 100%

Natarajan_7

|
| | 0% |
|======================================================================| 100%

PennNich_RISK_6

|
| | 0% |
|======================================================================| 100%

Qian_OD_17

|
| | 0% |
|======================================================================| 100%

Rajan_HIV_5

|
| | 0% |
|======================================================================| 100%

Roe_3

|
| | 0% |
|======================================================================| 100%

Roe_OD_4

|
| | 0% |
|======================================================================| 100%

Sambarey_HIV_10

|
| | 0% |
|======================================================================| 100%

Singhania_OD_20

|
| | 0% |
|======================================================================| 100%

Sivakumaran_11

|
| | 0% |
|======================================================================| 100%

Sloot_HIV_2

|
| | 0% |
|======================================================================| 100%

Suliman_4

|
| | 0% |
|======================================================================| 100%

Suliman_RISK_2

|
| | 0% |
|======================================================================| 100%

Suliman_RISK_4

|
| | 0% |
|======================================================================| 100%

Sweeney_OD_3

|
| | 0% |
|======================================================================| 100%

Tabone_OD_11

|
| | 0% |
|======================================================================| 100%

Tabone_RES_25

|
| | 0% |
|======================================================================| 100%

Tabone_RES_27

|
| | 0% |
|======================================================================| 100%

Thompson_9

|
| | 0% |
|======================================================================| 100%

Thompson_FAIL_13

|
| | 0% |
|======================================================================| 100%

Thompson_RES_5

|
| | 0% |
|======================================================================| 100%

Tornheim_71

|
| | 0% |
|======================================================================| 100%

Tornheim_RES_25

|
| | 0% |
|======================================================================| 100%

Vargas_18

|
| | 0% |
|======================================================================| 100%

Vargas_42

|
| | 0% |
|======================================================================| 100%

Verhagen_10

|
| | 0% |
|======================================================================| 100%

Walter_51

|
| | 0% |
|======================================================================| 100%

Walter_PNA_119

|
| | 0% |
|======================================================================| 100%

Walter_PNA_47

|
| | 0% |
|======================================================================| 100%

Zak_RISK_16

|
| | 0% |
|======================================================================| 100%

Zhao_NANO_6

|
| | 0% |
|======================================================================| 100%